/**
 * 登录模块，提供登录相关业务功能
 * 
 * @Date: 2016-1-21
 * @author: Jackson wang
 * @version: 1.0
 * @since: 1.0
 */
define(
		[ "jquery", "datagridServ", "sysmanMain", "bizProto", "btnServ","ethicUtil",
				"msgServ", "flowInit", "buttonEvent", "deptUserSelect","deptSelect","commonServ" ],
		function($, datagridServ, sysmanMain, bizProto, btnServ,ethicUtil, msgServ,
				flowInit, buttonEvent, deptUserSelect,deptSelect,commonServ) {

			'use strict';

			var _typeUrl = '/dictionary/getTree.action', _rootpath,
			// 评分详情url
			_initScoreListUrl = '/ethicEvaluate/query/getSubListDomainByMainId.action',
			// 编辑url
			_editUrl = '/ethicEvaluate/query/mainEditPage.action',

			_addScoreUrl = '/ethicEvaluate/query/getAddMinScore.action',
			// 评价列表url
			_evaluateUrlPre = '/ethicEvaluate/query',

			item_code_dic_id = 32, rootId,
			// rootId = 'panel-self-ethic-evaluation',
			// rootId = 'panel-ethic-evaluation',
			edit_window_id = 'ethic-evaluation-win', editIndex = -1,

			editIndex1 = -1, editBegin = false, el_width = 300, el_big_width = 674, window_width = 900, window_height = 600, $activityListGrid,
			// 当前列表点击行号
			currentListIndex = -1,
			
			//考评加分上限配置
			scoreConfig ,
			
			currentConfig = {
					//当前评价类型
					evaluate_name	: 'person',
					//当前评价代码
					evaluate_code	: 0,
					
					//下一状态标志
					NextStatus_code	: 1,			
					
					//记录锁定代码
					lock_code		: 4,
					
					
					
					//dom根节点id
					rootid			: 'panel-self-ethic-evaluation',
					
					//子系统代码
								
					subSystemCode	:'ethic',
					
					//业务模块代码
					moduleCode		:'deptEthicEvaluate',
					
					//业务模块完整编码
					fullBizcode		: 'ethic:deptEthicEvaluate',
					
					//评分依据字段及当前打分字段
					sourceField		: 'sel_score',
					targetField		: 'dept_score',
					
					//当前行
					currentRow		: null
					
				},
			
			// 考评类型
			evaluate_type = currentConfig.evaluate_name,
			// 双击列表传递参数值
			_data,

			// 设置评价分类类别（按科室评价、全院评价、资料归档分类）
			classify_type,
			// 根据不同的分类，以便获得不同的属性
			tempcolumns,
			// 标记变量，让部门列表树初始化一次就不再初始化
			deptInitializd

			var public_method = {

				initRootId : function() {
					rootId = sysmanMain.getCurrentModuConfig().rootId;
				},

				/**
				 * 提交后执行
				 */
				afterSubmit : function(_options) {
					private_method.afterSubmit(_options);
				},
				/**
				 * 提交前补充字表数据
				 */
				beforeSubmit : function(_options) {
					return private_method.beforeSubmit(_options)
				},
				
				beforeDel	: function(){
					return private_method.beforeDel();
				}
				,
				/**
				 * 编辑页面初始化
				 */
				initEdit : function(_options) {
					editIndex1 = -1
					private_method.initEdit(_options)
				},
				/**
				 * 初始化新增页面
				 * 
				 * @param _options.record
				 *            列表选中行
				 * @param _options.form
				 *            页面form对象
				 */
				initList : function(_options) {
					private_method.initList();
				},

				/**
				 * @param _options.record
				 */

				closeWindow : function() {
					$('#' + edit_window_id).empty()
					var _moduleConfig = sysmanMain.getCurrentModuConfig();
					_moduleConfig.initParam = {
						editable : true
					};
					sysmanMain.setCurrentModuConfig(_moduleConfig);
				},

				reCreateField : function(_options) {
					private_method.reCreateField(_options)
				},
				rowDblClick : function(index, row) {
					private_method.rowDblClick(index, row)
				},
				buttonExtends : function() {
					return {
						'自动评分' : function() {
							private_method.autoScore()
						},
						'提交' : function() {
							private_method.auditOne()
						},
						'批量提交' : function() {
							private_method.auditList()
						},
						'保存列表' : function() {
							private_method.save()
						}
					}
				}

			}

			var private_method = {

				isCanSubmit : function() {
					var flag = false
					var _data = {
						uid : $('#' + edit_window_id + ' #person_code').val(),
						year: $('#' + edit_window_id + ' #evaluate_year').val()
					}
					var _url = '/ethicEvaluate/query/isCanSubmit.action'
					$.ajax({
						url : '/' + sysmanMain.getRootPath() + _url,
						type : 'post',
						async : false,
						data : _data,
						success : function(data) {
							if (data) {
								if (data.isCanSubmit == false) {
									
									flag = true
								}
							}
						}
					})
					return flag
				},

				// 显示加扣分分数
				showAddMinScore : function(data) {
					
					//加分
					var add_score = 0, 
					
					//扣分
					mark_score = 0 ,
					
					//红包礼品分数
					gift_score = 0;					
					
					
					if(!scoreConfig){
						var _t =commonServ.getConfig({configName:'ethic_score_config'})
						if(_t){
							scoreConfig = $.parseJSON(_t)
						}
					}
					
					if (data) {
						
						$.each(data.rows,function(i,o){
							var _score = parseFloat(o.score)
							if (_score === _score) {
								
								
								if($.trim(o.bizcode) == 'gift'){
									//红包礼品分数
									gift_score += _score;									
									
								}else{
									//日常考评分数
									if ($.trim(o.addorminus_type) == '加分') {
										add_score += _score
									}	
									else {
										if(_score > 0){
											_score = - _score;
										}
										mark_score += _score
									}
								}
							}
							
						})
						
					}
					
					var _giftMax = 6
					if(scoreConfig && scoreConfig.gift){
						_giftMax = scoreConfig.gift
					}
					
					//判断红包礼品加分是否超过上限
					gift_score = gift_score>_giftMax?_giftMax:gift_score;
					 var _el = $('#' + edit_window_id + ' #add_score')
					 _el.textbox('setValue', parseFloat(add_score +gift_score ))
					 
					 _el = $('#' + edit_window_id + ' #mark_score');
					 _el.textbox('setValue', parseFloat(mark_score))
				
				},

				// 显示总分数和考评日期
				showTotScoreAndDate : function(data) {

					var tot_score = 0;
					var my_score = 0;
					//计算总分
					for (var i = 0; i < data.rows.length; i++) {
						tot_score += data.rows[i].sub_score;
						if (data.rows[i].sel_score) {
							my_score += data.rows[i].sel_score
						}
					}
					
					//设置总分
					$('#' + edit_window_id + ' #tot_score').textbox('setValue',
							tot_score);
//					$('#' + edit_window_id + ' #sel_score').textbox('setValue',
//							my_score);
					
					private_method.setCountScore(my_score);
					
					//判断是否已有值，无日期数据初始化，有数据不覆盖
					var _el = $('#' + edit_window_id + ' #evaluateat')
					if(_el.length==1){
						var _tmpDate = _el.val();
						if(!_tmpDate){
							var current_date = new Date();
							var str_date = current_date.getFullYear() + '-'
									+ (current_date.getMonth() + 1) + '-'
									+ current_date.getDate();
							_el.textbox(
									'setValue', str_date);
						}
					}
					

				},

				/**
				 * 保存方法
				 * @param  showMsg	是否显示提示信息
				 */
				save : function(showMsg) {

					$($activityListGrid).datagrid('acceptChanges');
					var _data = $($activityListGrid).datagrid('getData')
					if (_data && _data.rows) {
						// save data to remote
						var _rows = private_method.checkDataOverflow({
							rows : _data.rows,
							standardField : 'sub_score',
							targetField : 'sel_score'
						});
						var _url = '/' + sysmanMain.getRootPath()
								+ '/ethicEvaluate/saveList.action'
						$.ajax({
							url : _url,
							type : 'post',
							dataType : 'json',
							data : $.toJSON(_rows),
							contentType : 'appliction/json;charset=utf-8',
							success : function(data) {
								if(data.id){
									$('#'+ edit_window_id + ' .main-form').form('load',data);
									msgServ.Msgslide('操作成功');
								}else{
									msgServ.Msgslide('当期考评记录已存在，不能重复提交')
								}
								
							}
						})
					}
				},

				/**
				 * 检测数据超限,限制目标字段值不能超过标准值
				 * 
				 * @param _options.rows
				 *            待检测数据集
				 * @param _options.standardField
				 *            标准字段
				 * @param _options.targetField
				 *            目标字段
				 */
				checkDataOverflow : function(_options) {

					if (_options.rows && _options.rows.length > 0) {
						if (_options.standardField && _options.targetField) {
							var _s = _options.standardField;
							var _t = _options.targetField;

							$.each(_options.rows, function(i, o) {

								// 标准值存在
								if (o[_s]) {
									// 如果输入了值
									if (o[_t]) {
										var _score = parseFloat(o[_t]);
										// 如果输入不合法,默认满分
										if (_score !== _score) {
											o[_t] = o[_s]
										}
									}

									if (o[_t] > o[_s]) {
										// 目标值大于标准值
										// 重置目标字段值位标准值
										o[_t] = o[_s];
									} else {
										// 目标值小于0
										// 重置目标字段值为0
										if (o[_t] < 0) {
											o[_t] = 0;
										}
									}
								} else {
									// 标准值不存在
									o[_t] = 0
								}
							})

							return _options.rows;
						}
					}

				},

				// 列表页面初始化
				initList : function() {
					// 获取rootId
					public_method.initRootId();
					deptInitializd = false;
					var _typebtn = $('#' + rootId + ' a.accordion-btn');
					if (_typebtn.length > 0) {
						$(_typebtn).unbind('click');
						$(_typebtn).bind('click',
								private_method.function_btn_listenner)
					}

				},

				// // 功能按钮监听函数
				// function_btn_listenner : function(e) {
				// var _buttonConfig = {
				// //
				// '自我评价':function(){private_method.typeClick({type:evaluate_code.person})},
				// '科室考评' : function() {
				// private_method.typeClick({
				// type : evaluate_code.dept
				// })
				// },
				// '医院考评' : function() {
				// private_method.typeClick({
				// type : evaluate_code.all
				// })
				// },
				// '归档资料' : function() {
				// private_method.typeClick({
				// type : evaluate_code.finish
				// })
				// }
				// }
				// btnServ.applyButton({
				// buttonEvt : e,
				// buttonConfig : _buttonConfig
				// })
				//
				// },
				/**
				 * 评价类型监听事件
				 * 
				 * @param _options.type
				 *            评价类型
				 */
				// typeClick : function(_options) {
				// evaluate_type = _options.type
				// private_method.initListGridRow(_options)
				// },
				/**
				 * 初始化列表字段
				 * 
				 * @param _options.type
				 *            评价类型
				 */
				initListGridRow : function(_options) {

					var _url = '/getSelfListDomain.action', _gridParam = {
						rownumbers : true,
						animate : true,
						striped : true,
						border : true,
						// singleSelect:false,
						idField : 'id',
						fitColumns : true,
						checkOnSelect : true,
						pagination : true,
						selectOnCheck : true,
						onClickCell : private_method.editCells

					}
					var _columns = [ {
						field : 'ck',
						checkbox : true
					}, {
						field : 'bizno',
						title : '评价编号',
						width : 60,
						align : 'center'
					}, {
						field : 'evaluate_year',
						title : '考评年度',
						width : 30,
						align : 'center'
					}, {
						field : 'depart_name',
						title : '所在科室',
						width : 50,
						align : 'center'
					}, {
						field : 'person_name',
						title : '人员姓名',
						width : 30,
						align : 'center'
					}, {
						field : 'depart_code',
						title : '部门编号',
						type : 'hidden'
					}, {
						field : 'evaluate',
						title : '自我评价',
						width : 100,
						align : 'center'
					}, {
						field : 'sel_score',
						title : '自评得分',
						width : 30,
						align : 'center'
					} ,{
						field : 'status',
						title : '当前状态',
						width : 60,
						align : 'center',
						formatter: function(value,row,index){
							
							if (row.status){
								return ethicUtil.getListStatus({status:row.status});								
							}
						}

					}]

					if (_options.type) {
						private_method.initDeptUser(_options.type);
						switch (_options.type) {
						case evaluate_code.dept:
							_columns.push({
								field : 'dept_score',
								title : '科室评分',
								width : 30,
								align : 'center',
								editor : 'text'
							}, {
								field : 'dept_evaluate',
								title : '科室评价',
								width : 60,
								align : 'center',
								editor : 'text'
							})
							_url = '/getDeptListDomain.action'
							break;
						case evaluate_code.all:
							_columns.push({
								field : 'dept_score',
								title : '科室评分',
								width : 30,
								align : 'center'
							}, {
								field : 'dept_evaluate',
								title : '科室评价',
								width : 60,
								align : 'center'
							}, {
								field : 'composite_score',
								title : '医院评分',
								width : 30,
								align : 'center',
								editor : 'text'
							}, {
								field : 'hospital_evaluate',
								title : '医院评价',
								width : 40,
								align : 'center',
								editor : 'text'
							}, {
								field : 'show_score',
								title : '评价等级',
								width : 40,
								align : 'center',
								formatter : function(value, row, index) {
									if (row.composite_score > 100) {
										return "超出100分限制";
									} else if (row.composite_score >= 95) {
										return "优秀A";
									} else if (row.composite_score >= 80) {
										return "优秀B";
									} else if (row.composite_score >= 70) {
										return "良好";
									} else if (row.composite_score >= 60) {
										return "及格";
									} else if (row.composite_score >= 0) {
										return "不及格";
									} else {
										return "  ";
									}
								}
							})
							_url = '/getAllListDomain.action'
							break;
						case evaluate_code.finish:
							_columns.push({
								field : 'dept_score',
								title : '科室评分',
								width : 30,
								align : 'center'
							}, {
								field : 'dept_evaluate',
								title : '科室评价',
								width : 60,
								align : 'center'
							}, {
								field : 'composite_score',
								title : '医院评分',
								width : 30,
								align : 'center'
							}, {
								field : 'hospital_evaluate',
								title : '医院评价',
								width : 40,
								align : 'center'
							}, {
								field : 'show_score',
								title : '评价等级',
								width : 40,
								align : 'center',
								formatter : function(value, row, index) {
									if (row.composite_score > 95) {
										return "优秀A";
									} else if (row.composite_score > 80) {
										return "优秀B";
									} else if (row.composite_score > 70) {
										return "良好";
									} else if (row.composite_score > 60) {
										return "及格";
									} else if (row.composite_score > 0) {
										return "不及格";
									} else {
										return "  ";
									}
								}
							})

							_url = '/getFinishListDomain.action'
							break;
						default:

						}
						var _url = '/' + sysmanMain.getRootPath()
								+ _evaluateUrlPre + _url
						_gridParam.url = _url

					}

					_gridParam = $.extend({}, _gridParam, {
						columns : [ _columns ]
					})
					tempcolumns = _columns;
					var _listGrid = $('#' + rootId + ' table.dg-list')
					$activityListGrid = $(_listGrid).datagrid(_gridParam)
					
				},

				/**
				 * 初始化部门
				 * 
				 * @param _options.bizProto
				 */
				initDeptUser : function(type) {
					var $dept = $('#' + rootId + ' div.tg-department');

					classify_type = type

					var deptTreeUrl = "/honest/department/query/getTreeList.action";
					// 部门信息
					if ($dept && $dept.length > 0) {
						if (!deptInitializd) {
							$dept
									.treegrid({
										rownumbers : true,
										animate : true,
										idField : 'id',
										treeField : 'name',
										striped : true,
										border : true,
										fitColumns : true,
										height : window_height,
										width : el_width,
										url : deptTreeUrl,
										onClickRow : private_method.getClassifyValuation,
										columns : [ [ {
											field : 'name',
											title : '部门名称',
											width : 60,
											halign : 'center'
										} ] ]
									})
						}

					}
					deptInitializd = true;

				},

				/**
				 * 按照条件（部门）分别获取医德评价信息
				 */
				getClassifyValuation : function(row) {
					var _url;
					if (classify_type == "dept") {
						_url = '/getDeptListDomain.action'
					} else if (classify_type == "all") {
						_url = '/getAllListDomain.action'
					} else if (classify_type == "finish") {
						_url = '/getFinishListDomain.action'
					}

					var _gridParam = {
						rownumbers : true,
						animate : true,
						striped : true,
						border : true,
						// singleSelect:false,
						idField : 'id',
						fitColumns : true,
						checkOnSelect : true,
						pagination : true,
						selectOnCheck : true,
						onClickCell : private_method.editCells

					};
					_gridParam.url = '/' + sysmanMain.getRootPath()
							+ _evaluateUrlPre + _url;
					_gridParam.queryParams = {
						condition : {
							depart_code : row.id
						}
					}

					_gridParam = $.extend({}, _gridParam, {
						columns : [ tempcolumns ]
					})

					var _listGrid = $('#' + rootId + ' table.dg-list')
					$activityListGrid = $(_listGrid).datagrid(_gridParam)

				},

				// 编辑页面初始化
				initEdit : function(_options) {
					// 评价人员姓名及科室
					if (_data) {
						$('#' + edit_window_id + ' form.main-form').form(
								'load', _data)
						_data = null
					}
					var _el = $('#' + edit_window_id + ' #person_name')
					if (_el && _el.length > 0) {

						$(_el).textbox(
								{
									onClickButton : function(data) {
										var _userParam = {
											userids : edit_window_id
													+ ' #person_code',
											usernames : edit_window_id
													+ ' #person_name',
											deptid : edit_window_id
													+ ' #depart_code',
											deptname : edit_window_id
													+ ' #depart_name',
											selectByOwner : true,
											subsystem : 'ethic'
										// callback : private_method.getAddScore
										}
										deptUserSelect.openPage(_userParam)
									}
								})

						var txtValue = $(_el).textbox('getValue')
						if (!txtValue || $.trim(txtValue) == '') {
							var usr = sysmanMain.getCurrentUser();
							$(_el).textbox('setValue', usr.name)
							$('#' + edit_window_id + ' #person_code').val(
									usr.id)

							$('#' + edit_window_id + ' #depart_name').textbox(
									'setValue', usr.deptName)
							$('#' + edit_window_id + ' #depart_code').val(
									usr.deptid)
						}
					}
					
					//科室选择，用于支持人员科室不对应问题的处理
					_el = $('#' + edit_window_id + ' #depart_name')
					if (_el && _el.length > 0) {
						$(_el).textbox(
							{
								onClickButton : function(data) {
									var _userParam = {
										
										deptid : edit_window_id
												+ ' #depart_code',
										deptname : edit_window_id
												+ ' #depart_name',
										selectByOwner : true,
										subsystem : 'ethic'
									// callback : private_method.getAddScore
									}
									deptSelect.openPage(_userParam)
								}
							}
						)
					}
					
					
					// 记录编号，新增生成临时编号
					var _id = $('#' + edit_window_id + ' #id')
					var _idVal
					if (_id.length == 1) {

						_idVal = $(_id).val()
						// id为空
						if (!_idVal || _idVal == '') {
							var _date = new Date();
							_date = _date.getFullYear() + ''
									+ (_date.getMonth() + 1) + ''
									+ _date.getDate() + ''
									+ _date.getMilliseconds();
							var _tmpid = $('#' + edit_window_id + ' #tmpid')
							$(_tmpid).val('TMP' + _date)
						}
					}

					var _year = $('#' + edit_window_id + ' #evaluate_year')
					if (_year.length == 1) {

						var _tmpValue = $(_year).textbox('getValue')
						// id为空
						if (!_tmpValue || _tmpValue == '') {
							$.ajax({
								url		:'/' + sysmanMain.getRootPath() +'/ethicEvaluate/query/getEvaluateYear.action',
								async	: true,
								success	: function(data){
									if(data){
										$(_year).textbox('setValue', data);
										// 初始化评分表
										private_method.initScoreList();
										private_method.initAddMinScoreList();
									}
									
									// 获取加扣分
									// private_method.getAddScore();
									
								}
							})						
						}else{
							// 初始化评分表
							private_method.initScoreList();
							private_method.initAddMinScoreList();
						}
					}

					

					
				},

				initAddMinScoreList : function() {

					// 获取当前用户和考评期
					var _data = {
						uid : $('#' + edit_window_id + ' #person_code').val(),
						eval_year : $('#' + edit_window_id + ' #evaluate_year')
								.val()
					}

					var _url = '/ethicEvaluate/query/getAddMinScoreDetail.action';
					if (_data.uid && _data.eval_year) {
						_url += ("?uid=" + _data.uid + "&eval_year=" + _data.eval_year)
					}
					// html 中对应的div
					var _gridid = edit_window_id + ' div.evaluate-add-detail'
					var _grid = $('#' + _gridid)
					if (_grid.length == 1) {
						var _gridParam = {
							url : '/' + sysmanMain.getRootPath() + _url,
							idField : 'id',
							fitColumns : true,
							onLoadSuccess : function(data) {
								if (data && data.rows.length > 0) {
									datagridServ.mergeCellsByField({
										tableID : _gridid,
										colList : 'addorminus_type'
									})
								}
								//显示加扣分分数总分
								private_method.showAddMinScore(data);
							},
							onClickCell : private_method.editCell,
							columns : [ [ {
								field : 'addorminus_type',
								title : '分数类别',
								align : 'center',
								width : 20
							}, {
								field : 'item_name',
								title : '加扣分内容',
								width : 180,
								align : 'center'
							}, {
								field : 'score',
								title : '分数值',
								width : 20,
								align : 'center'
							} ] ]
						}
						$(_grid).datagrid(_gridParam)
					}

				},

				/**
				 * 获取加扣分
				 */
				// getAddScore : function() {
				// var _data = {
				// uid : $('#' + edit_window_id + ' #person_code').val(),
				// eval_year : $('#' + edit_window_id + ' #evaluate_year')
				// .textbox('getValue')
				// }
				//
				// $.ajax({
				// url : '/' + sysmanMain.getRootPath() + _addScoreUrl,
				// type : 'post',
				// async : false,
				// data : _data,
				// success : function(data) {
				// if (data) {
				// var add_score
				// if (data.add_score) {
				// add_score = data.add_score
				// } else {
				// add_score = '0.0'
				// }
				//
				// var _el = $('#' + edit_window_id
				// + ' #add_score')
				// _el.textbox('setValue', add_score)
				//
				// var mark_score
				// if (data.mark_score) {
				// mark_score = data.mark_score
				//
				// } else {
				// mark_score = '0.0'
				// }
				//
				// _el = $('#' + edit_window_id + ' #mark_score');
				// _el.textbox('setValue', mark_score)
				// }
				// }
				// })
				// },
				afterSubmit : function(_options) {
					if(_options &&　_options.data && _options.data.status=='error'){
						msgServ.Msgslide('当期考评记录已经存在，不能重复提交!')
					}else{
						$('#' + edit_window_id + ' .main-form').form('load',_options.data.rows[0]);
						
						var tempRootId = sysmanMain.getCurrentModuConfig().rootId;
						$('#' + tempRootId + ' table.dg-list').datagrid('reload')
						editIndex = -1;
						private_method.initScoreList();
						msgServ.Msgslide('操作成功!')
					}
				},
				// 初始化评分表
				initScoreList : function() {
					if (window.console) {
						console.log('initScoreList loaded and starting... ')
					}
					var _url
					var _idVal = $('#' + edit_window_id + ' #lobid').val()
					if (!_idVal || _idVal == '') {
						_url = _initScoreListUrl;
					} else {
						_url = _initScoreListUrl + '?lobid=' + _idVal
					}

					var _gridid = edit_window_id + ' div.evaluate-sub'
					var _grid = $('#' + _gridid)
					if (_grid.length == 1) {
						var _gridParam = {
							url : '/' + sysmanMain.getRootPath() + _url,
							striped : true,
							border : true,
							nowrap : false,
							// singleSelect:false,
							idField : 'id',
							fitColumns : true,
							onLoadSuccess : function(data) {
								if (data && data.rows.length > 0) {
									datagridServ.mergeCellsByField({
										tableID : _gridid,
										colList : 'item_name'
									})
									private_method.showTotScoreAndDate(data);
								}
							},

							onClickCell : private_method.editCell,
							columns : [ [
							// {field:'ck',checkbox:"true"},
							{
								field : 'item_name',
								title : '项目类别',
								align : 'center',
								width : 80
							}, {
								field : 'sub_content',
								title : '考评内容',
								width : 120,
								align : 'center'
							}, {
								field : 'sub_score',
								title : '单项分值',
								width : 20,
								align : 'center'
							}, {
								field : 'sel_score',
								title : '自评得分',
								width : 20,
								align : 'center',
								editor : 'text'
							}, {
								field : 'evaluate_result',
								title : '考评情况',
								width : 60,
								align : 'center',
								editor : 'text'
							} ] ],
							onAfterEdit : function(index, row, changes) {
								private_method.afterEdit(index, row, changes)
							},
							onEndEdit : function(index, row, changes) {
								private_method.afterEdit(index, row, changes)
							}

						}
						$(_grid).datagrid(_gridParam)
					}

				},
				rowDblClick : function(index, row) {
					
					var _grid = $('#' + currentConfig.rootid + ' .dg-list')
					
					var _btn = $('#' + currentConfig.rootid + ' [iconcls="icon-edit"]')
					if(_grid.length ===1 && _btn.length===1){
						_grid.datagrid('clearSelections');
						_grid.datagrid('selectRow',index);
						
						_btn.trigger('click');
					}
//					var editWindow = edit_window_id;
//					var _param = {}
//					var _moduleConfig = sysmanMain.getCurrentModuConfig();
//					if (!_moduleConfig) {
//						_moduleConfig = {}
//					}
//
//					var _param = {
//						index : index,
//						row : row,
//						rootId : currentConfig.rootid,
//						
//						editWindow : edit_window_id,
//						// moduleConfig:sysmanMain.getCurrentModuConfig(),传入空值，自动取当前模块配置
//						url : _editUrl,
//						maxWindowSize : true
//					}
//					// 暂存选中行
//					_data = row
//
//					// 设定当前选中行
//					currentListIndex = index
//					buttonEvent.doubleClickEdit(_param)

				},
				
				beforeDel    : function(){
					
					var ret = {
						status	: 1,
						msg		: '选中记录包含非自评阶段数据，操作当前无法执行'
					}
				
					var $grid = $('#' + currentConfig.rootid + ' .dg-list')
					var _rows = $grid.datagrid('getSelections');
					
					//数据验证标志
					var retStatus = true;
					if(_rows.length>0){
						$.each(_rows,function(i,o){
							if(o && o.status){
								if(o.status != currentConfig.evaluate_code){
									retStatus = false;
									ret = {
										status	: 0,
										msg		: '选中记录包含非自评阶段数据，操作当前无法执行'
									} ;
									return false;
								}
							}
						})
					}
					
					if(retStatus){
						ret = {
							status	: 1,
							msg		: null
						}
					}
					
					return ret;
				}
				,

				beforeSubmit : function(_options) {
					
					var _status = $('#'+edit_window_id + ' #status').val();
					if(_status && _status!='0'){
						return {error:'考评记录已提交 ,无法执行操作'};
					}
					var result = private_method.isCanSubmit();
					if (typeof result !== undefined && result == true) {
						
						var current_date = new Date();
						var current_year = current_date
								.getFullYear();
						var start_date = current_year + '年-'
								+ '10月'
						var end_date = (current_year + 1) + '年-'
								+ '9月'
						var errorMessage = '本期(' + start_date + '至'
								+ end_date + ')考评已经提交';

						return {error:errorMessage};
					}
					var _gridid = edit_window_id + ' div.evaluate-sub'
					if (editBegin) {
						$('#' + _gridid).datagrid('acceptChanges');
						$('#' + _gridid).datagrid('endEdit', editIndex);
						editIndex = -1;
					}
					var _data = $('#' + _gridid).datagrid('getData')

					/**
					 * 未进入编辑状态，强行触发分数统计
					 */
					if (!editBegin) {
						private_method.afterEdit()
					}
					if (_data && _data.rows) {

						var _rows = private_method.checkDataOverflow({
							rows : _data.rows,
							standardField : 'sub_score',
							targetField : 'sel_score'
						});

						var countScore = 0;
						for (var i = 0; i < _data.rows.length; i++) {
							var _score = parseFloat(_data.rows[i].sel_score)
							// 判断是否为正常数字
							if (_score === _score) {
								countScore += parseFloat(_data.rows[i].sel_score);
							}
						}

						private_method.setCountScore(countScore)

						return {
							sublist : $.toJSON(_rows)
						}
					}
				},
				editCell : function(index, field, value) {
					if (window.console)
						console.info(' editCell fired ...')
					var _gridid = edit_window_id + ' div.evaluate-sub'

					if (field == 'sel_score' || field == 'evaluate_result'
							|| field == 'dept_score') {
						if (!editBegin) {
							editBegin = true
						}
//						$('#' + _gridid).datagrid('beginEdit', index);
//
//						if (editIndex > -1 && (editIndex != index)) {
//							editIndex = index
//						}
						
						if(editIndex1 <=-1){
							var _grid = $('#' + _gridid)
							var _rows =  _grid.datagrid('getRows');
							
							
							$.each(_rows,function(i,o){
								_grid.datagrid('beginEdit', i);
							})
							editIndex1 = index
						}	

					}
				},

				editCells : function(index, field, value) {
					$activityListGrid = $('#' + rootId + ' table.dg-list')
					if (window.console)
						console.info(' editCells fired ...')
					if (field == 'dept_score' || field == 'dept_evaluate'
							|| field == 'composite_score'
							|| field == 'hospital_evaluate') {
						if (editIndex1 > -1 && (editIndex1 != index)) {
							$($activityListGrid).datagrid('acceptChanges');
							$($activityListGrid)
									.datagrid('endEdit', editIndex1);
						}
						
						editIndex1 = index

					}
				},

				afterEdit : function(index, row, changes) {
					if (window.console) {
						console.log('afterEdit fired ...')
					}
					var _grid = $('#' + edit_window_id + ' div.evaluate-sub')
					// var countScore = 0.0
					//
					// if (_grid.length == 1) {
					// var _data = $(_grid).datagrid('getData')
					// if (_data && _data.rows) {
					// $.each(_data.rows, function(i, row) {
					// if (row.sel_score)
					// countScore += parseFloat(row.sel_score)
					// })
					// }
					// }

					// private_method.setCountScore(countScore)

				},
				/**
				 * 自动评分
				 * 
				 */
				autoScore : function() {
					var target_grid, sourceField, targetField
					switch (evaluate_type) {
					case evaluate_code.person:
						target_grid = $('#' + edit_window_id
								+ ' div.evaluate-sub')
						sourceField = 'sub_score';
						targetField = 'sel_score';
						break;
					case evaluate_code.dept:
						target_grid = $('#' + rootId + ' table.dg-list')
						sourceField = 'sel_score';
						targetField = 'dept_score';
						break;
					case evaluate_code.all:
						target_grid = $('#' + rootId + ' table.dg-list')
						sourceField = 'dept_score';
						targetField = 'composite_score';
						break;
					// case evaluate_code.finish:
					// target_grid = $('#'+rootId +' table.dg-list')
					// sourceField = 'composite_score';
					// targetField = 'show_score';

					break;
					default:
						target_grid = $('#' + edit_window_id + ' div.evaluate-sub')
						sourceField = 'sub_score';
						targetField = 'sel_score';
	
					}
					if (target_grid && target_grid.length == 1) {
	
						var _grid = target_grid
						// 合计分数
						var countScore = 0.0
						var _records = $(target_grid).datagrid('getRows')
	
						$.each(_records, function(i, record) {
							if (record[sourceField]) {
								record[targetField] = record[sourceField]
								countScore += parseFloat(record[sourceField]);
							}
						})
	
						$(target_grid).datagrid('loadData', _records)
						private_method.setCountScore(countScore)
					}
				},
				setCountScore : function(val) {
					
					var _val = val;
					if(!_val){
						_val = 0.0;
					}
					//加分字段
					var _addEl = $('#' + edit_window_id + ' #add_score')
					var _add = _addEl.val();
					
					//扣分字段
					var _markEl = $('#' + edit_window_id + ' #mark_score')
					var _mark = _markEl.val();
					
					if(_add){
						_add = parseFloat(_add)
						_val += _add;
					}
					
					if(_mark){
						_mark = parseFloat(_mark)
						_val += _mark
					}
					
					
					var _countEl = $('#' + edit_window_id + ' #sel_score')
					if (_countEl.length == 1) {						
						var _count = _val.toFixed(1)
						$(_countEl).textbox('setValue', _count)
					}
				},

				auditOne : function() {
					var _auditVal = 1, target_grid

					var rootId = sysmanMain.getCurrentModuConfig().rootId;
					
					var _status = $('#'+edit_window_id + ' #status').val();
					if(_status && (_status!=0) ){
						msgServ.Msgslide('当前记录已经提交,无法再次提交');
						return ;
					}
					// 根据考评类型生成状态标志
					

					var _id = $('#' + edit_window_id + ' #id')
					var _idVal
					if (_id.length == 1) {

						_idVal = $(_id).val()
						// id为空
						if (!_idVal || _idVal == '') {
							msgServ.Msgslide('请先保存考评记录')
							return
						}
					}

					var _auditUrl = '/' + sysmanMain.getRootPath()
							+ '/ethicEvaluate/auditOne.action'

					$.messager.confirm('警告', '提交后将无法修改考评内容，确定执行操作?',
							function(r) {

								if (r) {
									var _data = {
										id : _idVal,
										status : _auditVal
									}
									var _param = {
										url : _auditUrl,
										data : _data,
										success : function(data) {
											msgServ.Msgslide('提交操作成功');

											$(target_grid).datagrid(
													'clearSelections')
											$(target_grid).datagrid('load')
											$('#' + edit_window_id).window(
													'close')
											//刷新列表
											$('#panel-self-ethic-evaluation .dg-list').datagrid('reload');

										},
										error : function() {
											msgServ.Msgslide('提交操作失败');
										}
									}
									$.ajax(_param)
								}
							})

				},

				/**
				 * 批量提交考评记录
				 */
				auditList : function() {
					//dom根节点
					var tempRootId = sysmanMain.getCurrentModuConfig().rootId;		
					
					// 保存修改
					var target_grid = $('#' + tempRootId + ' .dg-list');
					if (editBegin) {
						$(target_grid).datagrid('acceptChanges');
						$(target_grid).datagrid('endEdit', editIndex);
						editIndex = -1;
					}
								
					
					//下一节点状态值
					var nextStatus = private_method.getNextStatusByRootId(tempRootId)
					var _auditVal = nextStatus.auditVal
					
					//当前节点状态值
					var _curStatus = 0
					
					//调用批量提交考评记录方法
					ethicUtil.auditList({
						rootId:tempRootId,
						auditVal:_auditVal,
						valStandard:_curStatus
					})
				}
			

			}

			return public_method;

		});